home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 5 / Skunkware 5.iso / src / Games / reve / CHANGES < prev    next >
Text File  |  1995-05-03  |  24KB  |  539 lines

  1.  
  2. /*  @(#)CHANGES 1.29 91/11/13
  3.  *
  4.  *  Copyright (C) 1990, 1991 - Rich Burridge & Yves Gallot.
  5.  *  All rights reserved.
  6.  *
  7.  *  Permission is granted to copy this source, for redistribution
  8.  *  in source form only, provided the news headers in "substantially
  9.  *  unaltered format" are retained, the introductory messages are not
  10.  *  removed, and no monies are exchanged.
  11.  *
  12.  *  Permission is also granted to copy this source, without the
  13.  *  news headers, for the purposes of making an executable copy by
  14.  *  means of compilation, provided that such copy will not be used
  15.  *  for the purposes of competition in any othello tournaments, without
  16.  *  prior permission from the authors.
  17.  *
  18.  *  No responsibility is taken for any errors on inaccuracies inherent
  19.  *  either to the comments or the code of this program, but if reported
  20.  *  (see README file), then an attempt will be made to fix them.
  21.  */
  22.  
  23. Reve v1.3 change history.
  24. =========================
  25.  
  26. v1.3 - patchlevel 1. 13th November 1991.
  27.  
  28.        * From Norbert Jung <jung@dia.informatik.uni-stuttgart.de>
  29.          Need to include <ctype.h> in get.c for toupper() and tolower().
  30.  
  31.        * From Brett Carver <brett@hpnmd.sr.hp.com>
  32.          Various small changes to get reve V1.3 to compile on HP machines.
  33.  
  34.        * From Brett Carver <brett@hpnmd.sr.hp.com>
  35.          From Norbert Jung <jung@dia.informatik.uni-stuttgart.de>
  36.          If I am forced to pass, the color is nevertheless changed and the
  37.          computer plays with the wrong color.
  38.  
  39.        * From Valerie Haecky <vmh@Eng.Sun.COM>
  40.          Display the time left for the user[s] and computer. There is an
  41.          option on the property sheet that enables clock timers. New -clock
  42.          command line option and reve.showClocks X resource.
  43.  
  44. v1.3 - patchlevel 0. 8th November 1991.
  45.  
  46.        * The XView version is now generated from a devGuide .G file. Some
  47.          changes to the GUI.
  48.  
  49.        * The images and cursors have been converted to the portable XBM
  50.          format. A routine has been added to the SunView version to read
  51.          the images and cursors in this format.
  52.  
  53.        * All versions of reve can now play across the network. There is a
  54.          "-opponent user@host" command line argument, and there is an
  55.          in.reved daemon (almost identical to the BSD talk daemon), which
  56.          establishs the connection. See the README file for details of how
  57.          to install the in.reved daemon.
  58.  
  59.          Removed the "-black display" and "-white display" command line
  60.          options, and the -c command line option. Manuals pages have been
  61.          updated.
  62.  
  63.        * Removed all references to the color reve icon. All graphics
  64.          versions (even the color ones) now use the monochrome reve icon.
  65.  
  66.        * The X11 driver no longer tries to handle two screens.
  67.  
  68.        * The SunView version now terminates correctly if quit via the
  69.          pull-down frame menu.
  70.  
  71.        * Divided the TODO file into two sections; known problems and
  72.          possible enhancements.
  73.  
  74.  
  75. Reve v1.2 change history.
  76. =========================
  77.  
  78. v1.2 - patchlevel 9. 22nd July 1991.
  79.  
  80.        * From Richard K. Lloyd <RKL@anduin.compsci.liverpool.ac.uk>
  81.          You've updated the Makefile for the -DNOGETDTAB flag, but didn't
  82.          do the same for the Imakefile. HP-UX 7.0 and 8.0 needs this flag
  83.          set to compile OK.
  84.  
  85.        * From Richard K. Lloyd <RKL@anduin.compsci.liverpool.ac.uk>
  86.          I couldn't resize the main reve board to fill the whole screen
  87.          (1280 by 1024 colour). There appears to be a hard-coded limit to
  88.          the size of the board.
  89.  
  90.        * Ran the Xlib version through Saber-C and fixed up the inconsistencies.
  91.  
  92.        * The Xlib version of reve now correctly reads the -display <display>
  93.          command line option, to determine which display to initially open
  94.          to get X resource preferences. This wasn't a problem when you were
  95.          displaying reve on the same screen as the server was running on, but
  96.          was a problem for X terminals.
  97.  
  98.        * Implemented the "two screens on two machines" version for the Xlib
  99.          interface. If it's not your turn, then the hourglass cursor will be
  100.          turned on, and if you attempt to do anything, you get the message,
  101.          "It's not your turn". The "Computer plays:", "Difficulty:" and "Set
  102.          search depth:" options are ignored when in two player mode; the other
  103.          options on the property sheet should hopefully be just applicable to
  104.          the local screen. Note the one known remaining problem, which is
  105.          described near the beginning of the TODO file.
  106.  
  107. v1.2 - patchlevel 8. 1st July 1991.
  108.  
  109.        * From Michael Glad <glad@daimi.aau.dk>
  110.          As a possible alternative solution to the getdtablesize() problem,
  111.          perhaps there should be a 'GETDTABLESIZEMISSING' clause in the
  112.          makefiles.
  113.  
  114.        * Reve has been ported to Sun's SVR4 development platform. The X11,
  115.          XView and tty versions all work. A list of the Makefile definitions
  116.          that need to be uncommented is included in the example section of
  117.          the README file.
  118.  
  119.        * Compiled reve with an ANSI C compiler, fixing up any discrepancies.
  120.  
  121.        * Added in ANSI C function prototypes for each reve routine.
  122.  
  123.        * Added a paragraph to the README file, to describe the anonymous ftp
  124.          sites now available for reve.
  125.  
  126.        * From Martin Boyer <gamin@ireq-robot.hydro.qc.ca>
  127.  
  128.          - The README file has been modified to give the patchlevel as part
  129.            of the version number, and the date adjusted accordingly.
  130.  
  131.          - Yves Gallot no longer works at CERN. The README file and the manual
  132.            pages have been adjusted to reflect that he is currently has no
  133.            email address.
  134.  
  135.          - Fixed up the Makefile.dist to correctly shar up the fifteenth part
  136.            of the reve distribution.
  137.  
  138. v1.2 - patchlevel 7. 25th March 1991.
  139.  
  140.        * From Andreas Zins <zins@forwiss.uni-erlangen.de>
  141.          From Michael Glad <glad@daimi.aau.dk>
  142.          From Brett Carver <brett@hpsrbkc.hp.com>
  143.          From Richard K. Lloyd <RKL@anduin.compsci.liverpool.ac.uk> 
  144.          The routine raise() is already defined under HP_UX and Ultrix.
  145.          All occurances of raise() in the reve program have been replaced
  146.          with raise_reve().
  147.  
  148.        * The raise_reve() routine hadn't been written for the SunView version;
  149.          it was just a stub. Minor nit really, as there is currently no way of
  150.          calling it.
  151.  
  152.        * From Brett Carver <brett@hpsrbkc.hp.com>
  153.          Addition Makefile sample configuration for the README file.
  154.  
  155. v1.2 - patchlevel 6. 20th March 1991.
  156.  
  157.        * From Norbert Jung < jung@dia.informatik.uni-stuttgart.de>
  158.          The "moves?" and "suggest" symbols weren't being displayed or
  159.          toggled correctly on monochrome screens.
  160.  
  161.        * From Richard K. Lloyd <RKL@anduin.compsci.liverpool.ac.uk>
  162.          "make install" compiles reve_proc, which has a reference to the
  163.          BSD-only index routine. I did a dirty fix in the Imakefile to get
  164.          round this:
  165.  
  166.          DEFINES = $(CDEFS) -DX11 -Dindex=strchr
  167.  
  168.          I suspect that some #ifdef check for System V should be in there
  169.          somewhere.
  170.  
  171.        * From Michael Glad <glad@daimi.aau.dk>
  172.          HP-UX misses the 'index' function. I believe there ought to be a
  173.          'NOINDEX' clause in the Imakefile as in the ordinary Makefile.dist.
  174.  
  175.        * From Robert Cohen <robert@anucsd.anu.oz.au>
  176.          It would be nice to be able to close down (iconise) the reve window
  177.          while it was thinking and do something else. Then know when it was
  178.          done so you could make your move. So an option to choose between it
  179.          doing nothing on move or suggestion completion, beeping on completion,
  180.          or autoraising on completion would be nice. It should probably also
  181.          do something to the icon although that isnt sufficient by itself as
  182.          not every one uses the icons.
  183.  
  184.          [I've added three new X resources:
  185.  
  186.           reve.iconiseForOpponentMove:    false
  187.           reve.bellAfterOpponentMove:    false
  188.           reve.raiseAfterOpponentMove:    false
  189.  
  190.           combinations of these three should give everything that's desired.
  191.           Manual pages and Reve.ad updated - Rich.]
  192.  
  193.        * From Michael Glad <glad@daimi.aau.dk>
  194.          Reve_proc has a sad tendency to coredump. This makes 'reve' enter
  195.          some infinite loop of read system calls making my kernel eat 90% of
  196.          the CPU time. Some check might be missing somewhere.
  197.  
  198.          As far as I can figure out, the crash is provoked when the alarm
  199.          signal in rev_ip.c goes off. This causes a longjmp around line #107.
  200.          Unfortunately, the routine calling setjmp (play_reve) has not taken
  201.          any provision to protect its local variables from being clobbered
  202.          upon return from setjmp.  Code relying upon set/long jmp to preserve
  203.          any local variable must be considered nonportable. Using adb I've
  204.          traced the crashed to a index violation in line 276:
  205.  
  206.                   cpk[k] = cpk2[k] ;
  207.  
  208.        * From Brett K. Carver <brett@hpsrbkc.hp.com>
  209.          Perhaps some recommended settings for various computers, or a bit
  210.          more help in determining how to set the makefile stuff would help.
  211.  
  212.          [So far I only have settings for a Sun 4/65 and an HP Series 9000
  213.           model 3[67]0 - Rich.]
  214.  
  215.        * From Michael Glad <glad@daimi.aau.dk>
  216.          Changes to the Makefile.dist and Imakefile files to specify where
  217.          the reve_proc program can be found. There is also a new command line
  218.          option, -r <reve_pathname>, to allow this to be overridden at run
  219.          time. The manual pages have been updated to reflect these changes.
  220.  
  221. v1.2 - patchlevel 5. 14th March 1991.
  222.  
  223.        * From Norbert Jung < jung@dia.informatik.uni-stuttgart.de>
  224.          In procs.c is in do_suggest the parameter 'player' is declared in
  225.          the routines arguments and internal to the routine.
  226.  
  227.        * From Norbert Jung < jung@dia.informatik.uni-stuttgart.de>
  228.          Choose 'Computer plays black' in the property sheet.
  229.          Computer plays d-3.  Put a white stone on c-3.
  230.          Computer puts a black stone on c-4 AND THEN ON f-5 (!!!).
  231.  
  232.        * From Brett Carver <brett@hpsrbkc.hp.com>
  233.          I'm playing a game, and it's saying the computer is forced to pass
  234.          when I can clearly see moves.
  235.  
  236. v1.2 - patchlevel 4. 13th March 1991.
  237.  
  238.        * From Norbert Jung < jung@dia.informatik.uni-stuttgart.de>
  239.          - a typo in items.c, which corrects board labling.
  240.          - a #include needs to be added in trans/trans.c for <ctype.h>
  241.  
  242.        * In order to try to fix up the display of stones on a board that has
  243.          been resized, the second XSetFunction() call in make_pieces() in
  244.          x11.c has been changed to use GXset.
  245.  
  246.        * Changed the symbols displayed for legal moves and suggest. This is
  247.          to produce a consistent interface for mono and color. Two new image
  248.          files have been created:
  249.  
  250.          images/move8.icon
  251.          images/suggest8.icon
  252.  
  253.          I'm not very happy with the images, but they can easily be improved
  254.          without affecting the rest of the program.
  255.  
  256.          The Makefile.dist, images.h, MANIFEST and FILES files have been
  257.          updated, plus the routines that display legal moves and suggestions.
  258.  
  259.        * From Richard K. Lloyd <RKL@anduin.compsci.liverpool.ac.uk>
  260.          There is a slight inconsistency in the display of the legal moves and
  261.          the suggested move:
  262.  
  263.          A click on "Moves ?"  results in   Addition of "+"'s to show legal
  264.                                moves followed by...
  265.          A click on "Suggest"  results in   Addition of a "X" on top of one
  266.                                of the "+"'s to show suggested move
  267.                                followed by...
  268.          A click on "Moves ?"  results in   ALL "+"'s AND "X"'s removed from
  269.                                the display.
  270.                     
  271.          I feel that:     
  272.          1) The second click of the "Moves ?" button should leave the "X"
  273.             intact and, failing that,
  274.          2) The "Suggest" button should toggle the "X" on and off, since a
  275.             second click on that just recomputes the same suggested move
  276.             anyway.
  277.  
  278.        * From Soren Hein <shein@ferdowsi.berkeley.edu>
  279.          "moves?" could show, within each circle, how many stones that move
  280.          would conquer.
  281.  
  282. v1.2 - patchlevel 3. 19th February 1991.
  283.  
  284.        * Added missing X resource entries to the Reve.ad file, and the manual
  285.          pages.
  286.  
  287.        * From Brett K. Carver <brett@hpsrbkc.hp.com>
  288.          You allow the stone colors to be changed (I like red and blue), but
  289.          the control panel refers to players 'white' and 'black'. It would be
  290.          nice if they used the color names specified so the players would
  291.          match the stones.
  292.  
  293.         [Rather then use the color name, which could be something like
  294.          firebrick red, I've added in a couple more X resources:
  295.  
  296.          reve.whiteStoneName:
  297.          reve.blackStoneName:
  298.  
  299.          to allow you to specify alternate strings than Black or White].
  300.  
  301.        * The help text was being drawn in the normal font, not the help font.
  302.  
  303.        * From Thomas K. Bischoff <bisc@zellweger.ch>
  304.          When clicking on a illegal square, display the legal squares like the
  305.          Moves? button does. So you don't have to move the mouse to the control
  306.          panel. You could even discard the moves? button.
  307.          Idea from the "Smart Game Board" of Anders Kierulf.
  308.  
  309.          [I have put this in as a new toggle option on the property sheet.
  310.           There is also, yet another X resource:
  311.  
  312.           reve.showLegalMoves:
  313.  
  314.           which can be used to initialise this option].
  315.  
  316.        * From Thomas K. Bischoff <bisc@zellweger.ch>
  317.          Various modification to the trans program and it's integration into
  318.          the X11, SunView and XView versions:
  319.  
  320.          - had to make some patches to makefiles to make them work.
  321.  
  322.          - changed trans to act as filter which reads from standard input
  323.            and writes to standard output as default. 
  324.  
  325.          - created a print button which calls trans to print the game.
  326.  
  327.          - added another X resource:
  328.  
  329.            reve.printCommand:
  330.  
  331.            which allows you to specify an alternate print command.
  332.  
  333.          - the manual pages have been updated.
  334.  
  335. v1.2 - patchlevel 2. 18th February 1991.
  336.  
  337.        * The make_pieces() routines in x11.c and xview.c have been modified
  338.          to clear the black and white piece image areas in a slightly
  339.          different way. Hopefully this fixes up the problems seen on HP-UX
  340.          systems.
  341.  
  342.        * From Valerie Haecky (vmh@Eng.Sun.COM)
  343.          Added in the ability to print a transcript of a reve game to a
  344.          PostScript printer. This is currently a standalone utility in the
  345.          trans directory, but will be directly interfaced to a reve button
  346.          in the graphical versions of reve, in a future version.
  347.  
  348.        * From Robert Cohen <robert@anucsd.anu.edu.au>
  349.          Small patch to shut up the optimiser on HP-UX systems, which
  350.          complains about variables being un-initialised.
  351.  
  352. v1.2 - patchlevel 1. 11th February 1991.
  353.  
  354.        * From Brett K. Carver <brett@hpnmd.hp.com>
  355.          Needed #include <signal.h> in x11.c
  356.  
  357.        * From Brett K. Carver <brett@hpnmd.hp.com>
  358.          The XSetWMProtocols call is not available with X11 R3. These have
  359.          now been surronded with #ifndef X11R3 definitions.
  360.  
  361.        * From Mike Wexler <mikew@neptune.fx.com>
  362.          The distributed Imakefile didn't work.
  363.  
  364.        * From Thomas K. Bischoff <bisc@zellweger.ch>
  365.          The version number in the README file is wrong.
  366.  
  367.        * From Thomas K. Bischoff <bisc@zellweger.ch>
  368.          The Load button with the XView version saves a game. This has now
  369.          been changed to use XV_KEY_DATA.
  370.  
  371.        * From Martin Boyer <gamin@ireq-robot.hydro.qc.ca>
  372.          From Thomas K. Bischoff <bisc@zellweger.ch
  373.          After a game has been loaded, there needs to be a check to see if
  374.          the next person can move. If they  can't, and the opponent is the
  375.          computer, then the computer must make a "move".
  376.  
  377.        * From Martin Boyer <gamin@ireq-robot.hydro.qc.ca>
  378.          From Thomas K. Bischoff <bisc@zellweger.ch>
  379.          From Valerie Haecky <vmh@Eng.Sun.COM>
  380.          The program can hang if one player is forced to pass, and the
  381.          opponent is the computer.
  382.  
  383.        * From Thomas K. Bischoff <bisc@zellweger.ch>
  384.          From Valerie Haecky <vmh@Eng.Sun.COM>
  385.          With the XView version, the game board icon wasn't being set
  386.          correctly.
  387.  
  388.        * Under Open Windows, the InputHint needed to be given to the olwm
  389.          window for the control panel, to allow the keyboard to be used to
  390.          enter a load/save file name.
  391.  
  392.        * With the XView version, if the computer is making a move (or a
  393.          suggestion), and there is an event other than a repaint event, then
  394.          the bell is no longer sounded, it just displays the message "It's
  395.          not your turn". This needs to be improved. There will be certain
  396.          actions you can do while the computer is making a move.
  397.  
  398.        * Added sections into the event handling routines for the tty, x11
  399.          and sunview drivers, to better handle events when the computer is
  400.          making a move.
  401.  
  402.        * Setting the difficulty with the tty version caused a core dump
  403.          because some of the pseudo items dimensions had not been setup.
  404.  
  405.        * Doing a ^L to redraw the screen with the tty version didn't work.
  406.  
  407.        * The -debug and -log options weren't working. These flags are now
  408.          passed across to the reve_proc program. Debug messages are now
  409.          written out to a file called reve.debug.
  410.  
  411.        * Selection "computer plays neither" with the X11 version caused the
  412.          program to core dump.
  413.  
  414.        * Setting a certain cursor, will not set it for all visible windows.
  415.  
  416.        * Redo was incorrect for situations where one player had to pass.
  417.  
  418.        * From Thomas K. Bischoff <bisc@zellweger.ch>   
  419.          With the X11 version, only the board window could be iconified. The
  420.          control pane stayed open.
  421.  
  422.        * From Michael Glad <glad@daimi.aau.dk>
  423.          Removed the '#ifndef X11' code around the NOINDEX definition in
  424.          reve.h.
  425.  
  426.        * From Michael Glad <glad@daimi.aau.dk>
  427.          Problems with getdtablesize() under HP-UX.
  428.          I've using the stdio-defined constant _NFILE instead of the call
  429.          in makemove.c.
  430.  
  431.        * From Michael Glad <glad@daimi.aau.dk>
  432.          Reve should check the return value of XOpenDisplay() in x11.c. It
  433.          core dumps if access to the server is denied.
  434.  
  435. v1.2 - patchlevel 0. 5th February 1991.
  436.  
  437.        * From Martin Boyer <gamin%ireq-robot.UUCP@Larry.McRCIM.McGill.EDU>
  438.          I found a few bugs with the SunView version of reve, at patchlevel 7.
  439.          They all have to do with the color handling.
  440.  
  441.          1. The color array used to set the colormap segment should not be an
  442.             array of integers, but rather an array of unsigned characters
  443.             (main.c and sunview.c).
  444.  
  445.          2. Sunview doesn't allow the first and last entries of the colormap to
  446.             be equal (i.e. foreground and background colors must be different)
  447.             (color.h).
  448.  
  449.          3. The colormap segment should be a power of two (by extending it from
  450.             10 to 16, this also solves 2. above) (color.h).
  451.  
  452.          4. The props and help frames should have the same colormap as the main
  453.             frame, in order to display text correctly (sunview.c).
  454.  
  455.          5. The help frame should be created before the colors are loaded, in
  456.             order to apply 4. above (main.c).
  457.  
  458.        * From robert@anucsd.anu.edu.au (Robert Cohen)
  459.          While analysing the tree search code for reve (in rev_ip.c) and
  460.          reading the literature on the subject, preparatory to parallelising
  461.          it I had some ideas for improving the serial search. I havent changed
  462.          the board evaluation function or anything like that, just improved the
  463.          tree pruning so it visits less useless positions. One of the
  464.          techniques came from the article "parallel search of strongly ordered
  465.          game trees" in December 82 ACM computing surveys. This gives a good
  466.          overview of game tree search techniques both serial and parallel.
  467.  
  468.          Anyway I have prepared a number of patches incorporparating these that
  469.          speed up the search reasonably considerably. Something like 20% less
  470.          nodes visited to reach a given depth. Practically speaking at a given
  471.          difficulty level it searches usually 1 and sometimes 2 ply deeper.
  472.  
  473.        * Set the stdout debug printing in the new rev_ip.c, to be displayed
  474.          only if you use the -D command line option. This needs to be improved.
  475.  
  476.        * Further work on the X11 graphics version:
  477.          - Separated the control panel from the game board.
  478.          - The game board is now totally resizable. There is a minimum size
  479.            of 200x200.
  480.          - Condensed Creve.icon to half the size, and adjusted the routine
  481.            that turns this into the color reve icon, so that it can read the
  482.            condensed format.
  483.  
  484.        * Adjusted the SunView driver so that the control panel is separate
  485.          from the game board.
  486.  
  487.        * Adjusted the XView version. The control panel is now separate from
  488.          the games board, and the games board is resizable.
  489.  
  490.        * Adjusted the tty version to work with the new code.
  491.  
  492.        * All four versions now run the reve computer strategy as a separate
  493.          process that gets initially forked off. This now requires the
  494.          select system call.
  495.  
  496.        * Removed the undocumented -D (debug) command line option, and replaced
  497.          it with:
  498.          -debug  -  for printing debug messages to stdout.
  499.          -xdebug -  for debugging the X11 graphics driver (synchronous mode).
  500.  
  501.        * Created a new file called Reve.ad which gives all the X resource
  502.          application defaults for reve.
  503.  
  504.        * Added new X resources:
  505.          - reve.boardSize: which takes an integer value for the initial size
  506.                            of the reve game board.
  507.          - reve.boardFont: which takes the name of a font to use to display
  508.                            the numbers and letters on the game board.
  509.  
  510.        * From Robert Cohen <robert@anucsd.anu.edu.au>
  511.          The save game button does not work properly in the X11 version. Both
  512.          the load and save buttons seem to end up calling the routine
  513.          load_game.
  514.  
  515.        * From Robert Cohen <robert@anucsd.anu.edu.au>
  516.          One problem I noticed for example in the present version is that
  517.          there was no one terribly clear exit point.
  518.  
  519.          [The routine destroy_frame() should always be called during exiting.
  520.           This routine is in the individual graphics files - Rich.]
  521.  
  522.        * From Norbert Jung <jung@dia.informatik.uni-stuttgart.de>
  523.          If I use xreve (compiled on a SUN4) together with a DECstation 2100 as
  524.          X11-display, the bytes of the images get flipped vertically so that a
  525.          white piece looks like this:
  526.  
  527.          ...........oooo..........
  528.          .......ooo......ooo......
  529.          ...o......o....o......o..
  530.          ....o................o...
  531.          .....o..............o....
  532.          .....o..............o....
  533.          .....o..............o....
  534.          .....o..............o....
  535.          ....o................o...
  536.          ...o......o....o......o..
  537.          .......ooo......ooo......
  538.          ...........oooo..........
  539.